package com.xuebank.nfe.nfecar.model

import android.os.Parcel
import android.os.Parcelable


/**
 * Created by admin Mr.WANG 2019/1/3.
 */
class TagViewListModel(val tagViewBodel: MutableList<TagViewBodel>? = ArrayList()):Parcelable{
    constructor(parcel: Parcel) : this(parcel.createTypedArrayList(TagViewBodel.CREATOR)) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeTypedList(tagViewBodel)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<TagViewListModel> {
        override fun createFromParcel(parcel: Parcel): TagViewListModel {
            return TagViewListModel(parcel)
        }

        override fun newArray(size: Int): Array<TagViewListModel?> {
            return arrayOfNulls(size)
        }
    }

}

class TagViewListModels(val tagViewBodel: MutableList<TagViewBodel>? = ArrayList()) : Parcelable {
    constructor(parcel: Parcel) : this(parcel.createTypedArrayList(TagViewBodel.CREATOR)) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeTypedList(tagViewBodel)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<TagViewListModels> {
        override fun createFromParcel(parcel: Parcel): TagViewListModels {
            return TagViewListModels(parcel)
        }

        override fun newArray(size: Int): Array<TagViewListModels?> {
            return arrayOfNulls(size)
        }
    }

}

class TagIntI(var process: Int) : Parcelable {
    constructor(parcel: Parcel) : this(parcel.readInt()) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeInt(process)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<TagIntI> {
        override fun createFromParcel(parcel: Parcel): TagIntI {
            return TagIntI(parcel)
        }

        override fun newArray(size: Int): Array<TagIntI?> {
            return arrayOfNulls(size)
        }
    }

}


class TouchEventXY(var x:Float,var y:Float):Parcelable{
    constructor(parcel: Parcel) : this(
            parcel.readFloat(),
            parcel.readFloat()) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeFloat(x)
        parcel.writeFloat(y)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<TouchEventXY> {
        override fun createFromParcel(parcel: Parcel): TouchEventXY {
            return TouchEventXY(parcel)
        }

        override fun newArray(size: Int): Array<TouchEventXY?> {
            return arrayOfNulls(size)
        }
    }

}

class DeleteTagPosition(var position: Int?=0):Parcelable{
    constructor(parcel: Parcel) : this(parcel.readInt()) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeInt(position?:0)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<DeleteTagPosition> {
        override fun createFromParcel(parcel: Parcel): DeleteTagPosition {
            return DeleteTagPosition(parcel)
        }

        override fun newArray(size: Int): Array<DeleteTagPosition?> {
            return arrayOfNulls(size)
        }
    }

}

class DeleteTagListSizeList(var mDeleteTagListSize:MutableList<DeleteTagListSize>?= ArrayList()):Parcelable{
    constructor(parcel: Parcel) : this(
            parcel.createTypedArrayList(DeleteTagListSize.CREATOR)) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeTypedList(mDeleteTagListSize)
    }
    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<DeleteTagListSizeList> {
        override fun createFromParcel(parcel: Parcel): DeleteTagListSizeList {
            return DeleteTagListSizeList(parcel)
        }

        override fun newArray(size: Int): Array<DeleteTagListSizeList?> {
            return arrayOfNulls(size)
        }
    }

}

class DeleteTagListSize(var imagePosition: Int?=0,var TagPosition: Int?=0):Parcelable{
    constructor(parcel: Parcel) : this(
            parcel.readValue(Int::class.java.classLoader) as? Int,
            parcel.readValue(Int::class.java.classLoader) as? Int) {
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeValue(imagePosition)
        parcel.writeValue(TagPosition)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<DeleteTagListSize> {
        override fun createFromParcel(parcel: Parcel): DeleteTagListSize {
            return DeleteTagListSize(parcel)
        }

        override fun newArray(size: Int): Array<DeleteTagListSize?> {
            return arrayOfNulls(size)
        }
    }


}


